El intercambio de variables es una secuencia de instrucciones pensada para intercambiar los valores que contienen dos variables.
Supongamos que tenemos declaradas las variables
int a, b;
y que las leemos por la entrada estándar
cin >> a >> b;
Se trata, entonces, de pasar el valor de a a b, y viceversa. De entrada, paracería que el par de instrucciones siguientes
a = b; b = a;
resuelve el problema pero si pensamos detenidamente veremos que los valores finales de a y b serán iguales, y su valor será el valor inicial de b.
El razonamiento es el siguiente: la asignación a = b copia el valor de b en a pero a la vez, el valor contenido en a se pierde (se descarta al hacer la asignación). Luego, al hacer b = a, estaremos copiando el valor inicial de b, que hemos puesto nosotros mismos en a en la primera instrucción.
Para arreglar esto, no hay otra salida que declarar una nueva variable. A ésta se suele llamar aux (de "variable auxiliar"). El programa empezará, entonces, así
int a, b, aux; cin >> a >> b;
Ahora, antes de hacer a = b, guardaremos en aux el valor de a que antes se perdía:
aux = a;
Luego podemos hacer la asignación
a = b;
con la tranquilidad de saber que tenemos el valor de a en lugar seguro, y luego, para recuperar el valor original de a y ponerlo en b lo sacaremos de aux:
b = aux;
En definitiva, el programa completo es (incluyendo la salida):
int a, b, aux; cin >> a >> b; aux = a; a = b; b = aux; cout << a << ' ' << b << endl;
Este programa muestra los valores de a y b en el mismo orden de lectura pero intercambia primero sus valores.
Escribe la parte central del siguiente programa:
int main() { int a, b, c; cin >> a >> b >> c; // ... cout << a << ' ' << b << ' ' << c << endl; }
de tal manera que se haga una "rotación" de los valores de a b y c: el valor de a pase a b, el de b pase a c y el de c a a. Por ejemplo, si la entrada del programa es:
4 13 -1
la salida debe ser:
-1 4 13
En preparación